#set( $symbol_pound = '#' )
#set( $symbol_dollar = '$' )
#set( $symbol_escape = '\' )
package ${package}.${parentArtifactId}.modules.sys.service;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import ${package}.${parentArtifactId}.modules.sys.dto.SysOrgDTO;
import ${package}.${parentArtifactId}.modules.sys.vo.SysOrgVo;
import ${package}.${parentArtifactId}.modules.sys.vo.SysOrgTreeVo;
import ${package}.${parentArtifactId}.modules.sys.entity.SysOrg;
import ${package}.${parentArtifactId}.common.bean.PageData;
import ${package}.${parentArtifactId}.common.bean.PageParam;
import java.util.List;

/**
 * @Classname SysOrgService
 * @Description 组织机构表 Service
 * @Author Created by xudp (alias:孤傲苍狼) 290603672@qq.com
 * @Date 2020-10-15
 * @Version 1.0
 */
public interface SysOrgService extends IService<SysOrg> {

    void create(SysOrgDTO sysOrgDTO);

    void update(SysOrgDTO sysOrgDTO);

    void importData(List<SysOrgDTO> dataList, Boolean isCovered);
 
    void deleteById(Long id);

    void deleteByIds(List<Long> idList);

    SysOrgVo getSysOrgById(Long id);

    void delete(QueryWrapper<SysOrg> queryWrapper);

    void deleteAll();

    List<SysOrgVo> getList(QueryWrapper<SysOrg> queryWrapper);

    PageData<SysOrgVo> pageList(Page<SysOrg> page, QueryWrapper<SysOrg> queryWrapper);

    PageData<SysOrgVo> pageList(PageParam pageParam, QueryWrapper<SysOrg> queryWrapper);

    /**
    * 根据ID获取信息以及子节点列表
    * @param id
    * @return
    */
    List<SysOrgTreeVo> getSubNodeListById(Long id);

    /**
     * 根据ID获取父节点列表
     * @param id
     * @return
     */
    List<SysOrgTreeVo> getParentNodeTreeListById(Long id);

    /**
     * 根据ID获取树
     * @param id
     * @return
     */
    SysOrgTreeVo getTreeById(Long id);

    List<SysOrgTreeVo> getTreeVoList(QueryWrapper<SysOrg> queryWrapper);
}
